#if !defined(ximera_audio_iworld_hpp)
#define ximera_audio_iworld_hpp

// -----------------------------------------------------------

#include <ximera/types.hpp>
#include <ximera/common/sharedptr.hpp>

#include <ximera/audio/isound.hpp>
#include <ximera/audio/ilistener.hpp>
#include <vector>

namespace ximera { namespace audio
{
    class XIMERA_API IWorld
    {
    public:
        virtual ~IWorld() {}

        virtual ISound* loadSound(String const& fileName, bool is3D = true) = 0;
        virtual ISoundData* loadSoundData(String const& fileName, bool is3D = true) = 0;

        virtual IListener* createListener() = 0;
        virtual ISound* createSound() = 0;
    };

    typedef SharedPtr<IWorld> IWorldPtr;
}}

// -----------------------------------------------------------

#endif